查看原文
其他

服务管理和启动流程(2)-target unit、systemd、运行级别

Cloud研习社 Cloud研习社 2023-06-06


每周二、四、六定期更新,我们不见不散!



通过systemctl管理不同的操作环境(target unit)


上面我们查看了service类型的unit,现在我们来看看target类型的unit有哪些:

[root@studyclub ~]# systemctl list-units --type=target --all UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Local Encrypted Volumes emergency.target loaded inactive dead Emergency Mode final.target loaded inactive dead Final Step getty-pre.target loaded inactive dead Login Prompts (Pre) getty.target loaded active active Login Prompts graphical.target loaded inactive dead Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network-online.target loaded active active Network is Online network-pre.target loaded inactive dead Network (Pre) network.target loaded active active Network nfs-client.target loaded active active NFS client services nss-lookup.target loaded inactive dead Host and Network Name Lookups nss-user-lookup.target loaded inactive dead User and Group Name Lookups paths.target loaded active active Paths remote-fs-pre.target loaded active active Remote File Systems (Pre) remote-fs.target loaded active active Remote File Systems rescue.target loaded inactive dead Rescue Mode rpc_pipefs.target loaded active active rpc_pipefs.target rpcbind.target loaded active active RPC Port Mapper shutdown.target loaded inactive dead Shutdown slices.target loaded active active Slices sockets.target loaded active active Sockets sound.target loaded active active Sound Card swap.target loaded active active Swap sysinit.target loaded active active System Initialization● syslog.target not-found inactive dead syslog.target time-sync.target loaded inactive dead System Time Synchronized timers.target loaded active active Timers umount.target loaded inactive dead Unmount All Filesystems
LOAD = Reflects whether the unit definition was properly loaded.ACTIVE = The high-level unit activation state, i.e. generalization of SUB.SUB = The low-level unit activation state, values depend on unit type.
32 loaded units listed.To show all installed unit files use 'systemctl list-unit-files'.通过上面的信息我们可以看出来当前系统总有32个target类型的unit,其中有几个是关于Linux运行级别的(重要):运行级别是Linux的不同的运行模式,不同的模式有不同的功能,我们来看:graphical.target:图形界面模式。这种运行级别情况下,可以有图形操作界面multi-user.target:存文本模式,这也是正常生产中最多使用的模式rescue.target :救援模式。这种模式是系统在出问题以后无法正常启动,开机时会有进入rescue模式的提示,进入以后使用对系统做维护poweroff.target:这个就是关机喽reboot.target:用来重启那么,我们怎么知道我们当前是在哪个模式下呢?


[root@studyclub ~]# systemctl [command] [unit.target]
command:
  get-default
  set-default
  isolate 不用重启,直接切换到后面指定的模式

# 实例1:获取系统当前的默认运行级别
[root@studyclub ~]# systemctl get-default
multi-user.target

# 实例2:设置系统默认的运行级别为graphical
[root@studyclub ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.

# 实例3:查看修改后的运行级别
[root@studyclub ~]# systemctl get-default
graphical.target

# 实例4:在不重启的情况下修改运行级别,即让运行级别即时生效
[root@studyclub ~]# systemctl isolate multi-user.target
# 注意:即时生效仅临时有效,重启以后还是维持原来的运行级别


扩展思考(思考出这个题的答案,你也就获得了一个好的工作习惯):实例2中,返回结果的最后一行的意思是“创建从default.target文件到graphical.target文件的符号链接(即软连接)”,为什么要创建软连接呢?


与systemd相关的几个目录



/usr/lib/systemd/system:存放每个服务的启动脚本/run/systemd/system:系统执行过程中产生的脚本,优先级高于上一个目录/etc/systemd/system:管理员根据需求创建的执行脚本,优先级高于上一个目录。开机是否启动,要看这里,这里其实是一堆连接文件


再论运行级别


我们上面讲到并实践了修改linux的运行级别,下面我们来了解一下运行级别的历史:在centos7以前,Linux系统运行级别分为7个:
  • 0  关机(请不要把系统运行级别设置为0)

  • 1  单用户模式 (root用户密码忘记,可用此模式找回)

  • 2  没有NFS,多用户模式

  • 3  命令行模式 文本模式(企业级服务器正常运行状态)  

  • 4  未使用

  • 5  图形化模式 桌面模式  X11(桌面个人版系统运行状态)

  • 6  重启(不要把系统运行级别设置为6)

上面这7个运行级别在centos7以前才有,到了centos7以后就只剩下前面提到的poweroff、rescue、multi-user、graphical、reboot了。那么我看看这些运行级别的文件在哪:


[root@studyclub system]# ll runlevel*
lrwxrwxrwx. 1 root root 15 Jan 13 05:00 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Jan 13 05:00 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Jan 13 05:00 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jan 13 05:00 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jan 13 05:00 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Jan 13 05:00 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Jan 13 05:00 runlevel6.target -> reboot.target


怎么样,运行级别runlevel0-7还在,但是都通过软连接指向了poweroff、rescue、multi-user、graphical、reboot。原来的runlevel2/3/4都合并成了multi-user模式。其余的级别对应后和原来没有含义上的差别。

新手应知:

    尝鲜Rocky Linux

《Linux基础及进阶》:

    041 - 进程管理与计划任务(2)-工作的前后台管理    042 - 进程管理与计划任务(3)-nohup、ps、top、pstree    043 - 进程管理与计划任务(4)-uptime\free\htop    044 - 进程管理与计划任务(5)-crontab    045 - 服务管理和启动流程(1)-systemctl启动服务、查看服务


看完本文有收获?请分享给更多人


推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

微信号|bjdream-1


Cloud研习社 · 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存